// 工作流
import vue from 'vue';
const state = {
  // 组件树
  compTreeData: [],
  // 设置面板的类型，1输入数据 2 输出数据 3通用节点 4复用节点  5自定义组件  9工作流
  settingType: 1,
  // 当前的节点
  currentNode: null,
  // 画布上面的线
  link: [],
  // 画布上面的节点
  node: {},
  // 运行环境数据
  imageList: [],

  // 自动补全窗口
  autoDatas: [],

  kgId: '',
  kgName: ''
}

const mutations = {
  // 组件树的数据
  setComTreeData (state, treeData) {
    state.compTreeData = treeData
  },

  // 更改面板的类型
  changeSettingType (state, newType) {
    state.settingType = newType
  },

  // 设置当前的激活节点
  setCurrentNode (state, newNode) {
    state.currentNode = JSON.parse(JSON.stringify(newNode));
  },

  // 设置当前的激活节点
  setLink (state, link) {
    state.link = JSON.parse(JSON.stringify(link));
  },

  // 设置当前的所有节点
  setNode (state, node) {
    state.node = JSON.parse(JSON.stringify(node));
  },

  // 设置节点的状态
  setNodeStatus (state, {id, status}) {
    vue.set(state.node[id], 'status', status);
  },

  // 获取日志数据
  // 设置图谱 id
  setKgId (state, kgId) {
    state.kgId = kgId
  },

  // 设置图谱名称
  setKgName (state, kgName) {
    state.kgName = kgName
  },

  // 设置运行环境
  setImageList (state, imageList) {
    state.imageList = imageList;
  },

  // 设置自动补全数据
  setAutoDatas (state, newData) {
    let beforeData = JSON.parse(JSON.stringify(state.autoDatas));
    let beforeLen = beforeData.length;
    beforeData.push(newData);

    let dataSet = new Set(beforeData);
    // 相同则表示有重复，不管
    // 不相同则添加到store中
    if (dataSet.size > beforeLen) {
      state.autoDatas = Array.from(dataSet)
    }
  }
}

export default {
  state,
  mutations
}
